<?php 
/**
 * Author: Zheng_Great
 * Description:  YII2 sql查询练习控制器
 * Date: 2018-12-13 10:54:51
 * 网站链接地址：http://www.yii-china.com/post/detail/8.html
 * YII手册查询方法：https://www.yiichina.com/doc/guide/2.0/db-query-builder
 */
 
namespace frontend\controllers;
use yii;
use yii\web\Controller;
use frontend\models\artide\SqlPractice;
use frontend\models\Order;
use frontend\models\Customer;

class SqlqueryController extends Controller{

	#查询数据
	public function actionIndexTest(){

		# findBySql 手动执行查询语句
		// $sql_query='select * from SqlPractice where id=1';
		// $sq=SqlPractice::findBySql($sql_query)->all();  

		#findOne 查询 
		#one
		// $sq1=SqlPractice::find()->where('id = :id',['id'=>2])->asarray()->one(); #预处理 查询
		// $sq1=SqlPractice::find()->where(['id'=>1])->asarray()->one();
		// $sq1=SqlPractice::findOne(1);	#简写方式
		// print_r($sq1);echo '<hr>';
		
		#findAll 查询
		// $sq2=SqlPractice::find()->where(['id'=>[2,4,6]])->asarray()->all();
		// $sq2=SqlPractice::findAll([2,4,6]);	#简写方式
		// print_r($sq2);echo '<hr>';

		#where 条件查询

		# and 查询(id=1,2,8 且 flag=1)
		// $sql_cond = ['id' =>[1,2,8], 'flag' => 1];
		// $sq3=SqlPractice::find()->where($sql_cond)->asarray()->all();
		// var_dump($sq3);echo '<hr>';
		


		#预处理 表达方式
		// $sql_query =[':status'=>0,':flag'=>1];
		// $sq3=SqlPractice::find()->where('status=:status and flag=:flag',$sql_query)->asarray()->all();
		// print_r($sq3);echo '<hr>';

		#between查询 (id>=1 并且 id<=10)
		$sq4=SqlPractice::find()->where(['between','id',1,10])->asarray()->all();
		print_r($sq4);echo '<hr>';

		#id>3
		$sq5=SqlPractice::find()->where(['>','id',3])->asarray()->all();
		print_r($sq5);echo '<hr>';
		
	}

	/** 两表联查（客户表：Customer  订单表：order）
	 * description: yii2 两表联查 sqlpractice/league-sql-query
	 * @param {type} 
	 * @return: data
	 */
	
	public function actionLeagueSqlQuery(){
		
		//查询用户所有的订单(根据客户表ID，查询订单表中所有该客户下的订单)
		echo '查询用户所有的订单: <br>';
		$customer=Customer::find()->where(['name'=>'zhangsan'])->one();
		// print_r($customer);die();
		// $orders=$customer->hasMany(Order::className(),['customer_id'=>'id'])->asarray()->all();
		$orders=$customer->getOrders();
		$orders=$customer->orders;
		print_r($orders);echo '<hr>';
	

		// 根据订单ID,查询客户信息
		echo '根据订单ID,查询客户信息: <br>';
		$order=Order::find()->where(['id'=>5])->one();
		print_r($order);
		// $customer=$order->hasOne(Customer::className(),['id'=>'customer_id'])->asarray()->all();
		$customer=$order->yangCustomer();
		print_r($customer);echo '<hr>';

		// 两表连查
		echo '两表连查: <br>';
		$model = Customer::find()->joinWith('Order'); 
		// $count = $model->count();
		print_r($model);echo '<hr>';
	}

	#增加数据
 	public function actionCreate(){
		$SqlModel=new SqlPractice();
		
		$SqlModel->imgurl= 'wei1';
		$SqlModel->status= '1';
		$SqlModel->flag= '1';

		$SqlModel->validate();
		if($SqlModel->save()){
			echo '数据插入成功';
			return;
		}else{
			echo '抱歉数据删除失败！';
		}

			
	}

	#删除数据
	public function actionDel(){
		$res=SqlPractice::deleteAll('id =:uid',['uid'=>9]);
		if($res){
			echo '删除成功';
			return false;
		}
		echo '删除失败';
	}

	#更新数据
	public function actionUpdate(){
			$id=9;
			$SqlModel=SqlPractice::find()->where('id=:id',[':id'=>$id])->one();
			$SqlModel->imgurl='update';
			$SqlModel->status='1';
			$SqlModel->flag='0';
			if($SqlModel->save()){
				echo '数据更新成功';
				return;
			}else{
				echo '抱歉数据更新失败！';
			}
		
	}


}
